/****************************************************************
 *
 *  Interface definition
 *
 ****************************************************************/
namespace noria.util
{
    using IRawMemory = noria.IRawMemory;

    /// <summary>
    /// ResourceManager caches the resources as a map in the memory
    /// </summary>
    [Implementation("noria.util.ResourceManager")]
    interface IResourceManager
    {
        /// <summary>
        /// Load the target resource manifest and the data into the memory
        /// </summary>
        void Init();

        /// <summary>
        /// Gets the raw binary piece of memory by the given unique key
        /// NOTE: Ever release the returned memroy manually!!
        /// </summary>
        IRawMemory GetResource(string key);
    }
}